#在计算加减乘除前，先输出一个分隔线（=====）
#方案6：使用修饰器完成
# 修饰器，既可以有返回值、也可以没有返回值，他的样式是多种多样的。
# 不同格式的参数，2个或3个，
# 当然，参数个数、类型都是可以多样的

def decorator(function):
    def wrapper(*args,**kwargs):
        print("=====开始===========")            
        x=function(*args,**kwargs)   #执行原函数    
        return x 
    return wrapper


@decorator
def myAdd(a,b):
    return a+b

@decorator    
def myAdd3(a,b,c):
    return a+b+c

@decorator
def mySubstract(a,b):
    return a-b

@decorator
def myMultiply(a,b):
    return a*b

@decorator
def myDivide(a,b):
    return a/b


print(myAdd(3,4))
print(myAdd(3,4))
print(myAdd3(3,4,5))
print(mySubstract(6, 7))
print(myMultiply(6,6))
print(myDivide(5,6))















# def decorator(function):
#     '''
#     最外层（第1层）decorator是装饰器名称
#     function：参数，即需要装饰的函数的名称（函数名称）
#     return：返回值wrapper，为了保持与原函数参数一致（返回值为函数）
#     '''
#     def wrapper(*arg,**args):
#         '''
#            内部函数（第2层）函数，该函数用于实现“额外功能”（装饰作用）
#            *arg,**args：参数保持与需要装饰的函数参数一致，这里用*arg和**args代替
#         '''
#         #Todo  执行函数前装饰操作（要做什么写在这里，额外功能代码，装饰功能，额外功能代码）            
#         function()   #执行原函数
#     return wrapper